package br.com.velp.sudecap.util;

import java.util.*;

/**
 * <sumario>
 * <objetivo>"Rastreabilidade"</objetivo>
 * <autor>EDUARDO SANTOS DE OLIVEIRA</autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 17.07.2013 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <requisito_afetado> N/A </requisito_afetado>
 * <descricao> Classe Utilitária Para Tratamento de 
 *             Campos Tipo DATE
 * </descricao>
 * </sumario>
 */
public class DateUtils {
    
    /**
     * Responsável Por Corrigir a Hora 
     * da Data Passada Como Argumento, 
     * Zerando Hora, Minuto, Segundo e MiliSegundo
     * 
     * @param Date dataInicial
     * @return Date dataCorrigida
     * 
     */
    public static Date zerarHoraMinutoSegundo(Date dataParam){
        
        Calendar calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone("America/Sao_Paulo"), new Locale("pt_BR"));
        
        calendar.setTime(dataParam);
        calendar.set(Calendar.HOUR, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        
        return calendar.getTime();
        
    }
    
    /**
     * Responsável Por Corrigir a Hora 
     * da Data Passada Como Argumento, 
     * Configurando Hora, Minuto, Segundo e 
     * Milisegundo Para o Ùltimo Valor Válido 
     * Dentro do Intervalo:
     * 
     *  - Hora: 23
     *  - Minuto: 59
     *  - Segundo: 59
     *  - Milisegundo: 999
     * 
     * @param Date dataFinal
     * @return Date dataCorrigida
     * 
     */    
    public static Date corrigirDataHoraFinal(Date dataFinal){
        
        Calendar calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone("America/Sao_Paulo"), new Locale("pt_BR"));
        
        calendar.setTime(dataFinal);
        calendar.set(Calendar.HOUR, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        
        return calendar.getTime();
        
    }
    
}
